package com.woniu.controller;

import cn.hutool.captcha.LineCaptcha;
import cn.hutool.core.lang.Snowflake;
import com.woniu.util.JsonResult;
import com.woniu.vo.CodeVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;

/**
 * @author zgc  2024/6/17
 */
@Controller
@Slf4j
@RequestMapping("/code")
public class CodeController {
    @Resource
    LineCaptcha lineCaptcha;

    @Resource
    Snowflake snowflake;

    @Resource
    HashMap<String,String> map;
  

    @GetMapping("/getCode")
    @ResponseBody
    public JsonResult<CodeVo> getCode() throws IOException {
        //图形验证码写出，可以写出到文件，也可以写出到流
        // lineCaptcha.write("d:/line.png");
        lineCaptcha.createCode();
        //输出code
        String code = lineCaptcha.getCode();
        System.out.println("生成的验证码：" + code);

        // 再生成一个ID，让后端，可以识别到前端：
        long codeId = snowflake.nextId();

        // 把生成的codeId 和 code 进行级存
        map.put(codeId+"",code);

        // 这里改成了，生成base64编码图片，方便我们处理。
        String imageBase64Data = lineCaptcha.getImageBase64Data();
        // lineCaptcha.write(response.getOutputStream());
        CodeVo codeVo = new CodeVo();

        codeVo.setCodeId(codeId+"");
        codeVo.setCode(imageBase64Data);

        return JsonResult.ok(200, codeVo);
    }

    @GetMapping("/checkCode")
    @ResponseBody
    public String checkCode(String code) {
        //验证图形验证码的有效性，返回boolean值
        boolean f = lineCaptcha.verify(code);
        log.info("验证的结果是：" + f);
        return f + "";
    }

}
